﻿using linkPosWeb.Class;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace linkPosWeb.servisler
{
    /// <summary>
    /// Summary description for kernel
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class kernel : System.Web.Services.WebService
    {

        [WebMethod]
        public int HelloWorld(string imza)
        {

            int token = 0;
            // password ve imzaya gore bir token oluşturuluyor  bu token gonderiliyor token registryye yazılıp gün bu işlemler bu doğrulama ile yapılıyor

            subeler s = new subeler();
            s.Subeimzasi = imza;
            s.firmaIDgetir();
            token = s.FirmaID;

            // 
            return token;
        }

        [WebMethod]
        public int gettheid(string imza)
        {

            int token = 0;
            // password ve imzaya gore bir token oluşturuluyor  bu token gonderiliyor token registryye yazılıp gün bu işlemler bu doğrulama ile yapılıyor
            subeler s = new subeler();
             s.Subeimzasi=imza;
             s.firmaIDgetir();
             token=s.FirmaID+2789;


            // 
            return token;
        }


        [WebMethod]
        public string linkyregister(string bayikodu, string harddisk, string anakart, string mac)
        {
            linkyactive lac = new linkyactive();
            lac.Bayikodu = bayikodu;
            lac.Harddisk = harddisk;
            lac.Anakart = anakart;
            lac.Mac = mac;
            lac.registerolustur();
            lac.kiyolustur();
            lac.kaydol();
            return lac.RegisterID;

        }


        [WebMethod]
        public int Anlikkasabilgisi(int token,int parcasayisi,int musterisayisi,double hasilat,double gunluknakit,double gunlukvisa,double gunlukcari, double eskivisa, double eskinakit,double toplamcari, double masraflar)
        {
            int durum = 0;

            // buraya mağzadan gelen imza bilgisine gore gerekli tablolara datalar yazılıyor bu datalar mssql veri tabanında tutulsun çünki tarih bazlılık söz konusu linq kullanalım bunlar aynı zamanda crownjob ile temizlenip günlük raporda tutulabilir
            
            // 

            raporlar r = new raporlar();
            r.FirmaID=token;
            r.Eskivisa=eskivisa;
            r.Eskinakit = eskinakit;
            r.psayi = parcasayisi;
            r.Msayisi = musterisayisi;
            r.Hasilat = hasilat;
            r.Gunluknakit=gunluknakit;
            r.Gunlukcari = gunlukcari;
            r.Gunlukvisa = gunlukvisa;
            r.Toplamcari=toplamcari;
            r.Masraflar = masraflar;


            r.anlikkasabilgisikaydet();



            return durum;
        }

        [WebMethod]
        public int masrafkaydet(string imza,int token, double tutar, string tipi, string aciklama )
        {
            int durum = 0;

            // önce o güne ait tüm masrafları siliyor daha sonra gelen dizideki tüm masrafları bir döngü içerisinde  tek tek kaydediyor
            // böylece masraflarda anlık  tutarlılık sağlanıyor
            object[] kolonlar = {"subekodu","firmaID","tutar","tipi","aciklama","tarih","zaman" };
            object[] degerler = {imza,token,tutar,tipi,aciklama,context.sadecetarih(),context.sadecesaat()};


            context.myekle("masraflar", kolonlar, degerler);

            


            return durum;
        }
        [WebMethod]
        public int masrafsil(string imza)
        {
            int durum = 0;

            // önce o güne ait tüm masrafları siliyor daha sonra gelen dizideki tüm masrafları bir döngü içerisinde  tek tek kaydediyor
            // böylece masraflarda anlık  tutarlılık sağlanıyor
            string[] kolonlar = { "subekodu", "tarih" };
            string[] degerler = { imza,context.sadecetarih()};


            context.mysil("masraflar", kolonlar, degerler, "and");



            return durum;
        }

        [WebMethod]
        public int iptaller(string imza, int token, string sipariskodu, double tutari, string aciklama )
        {
            int durum = 0;

            // önce o güne ait tüm iptaller siliyor daha sonra gelen dizideki tüm iptaller bir döngü içerisinde  tek tek kaydediyor
            // böylece masraflarda anlık  tutarlılık sağlanıyor
            object[] kolonlar={"subekodu","firmaID","sipariskodu","iptaltutari","iptalsebebi","tarih","saat"};
            object[] degerler = {imza,token,sipariskodu,tutari,aciklama ,context.sadecetarih(),context.sadecesaat()};

            context.myekle("iptaller",kolonlar,degerler);

            return durum;
        }


        [WebMethod]
        public int iskontolar(string imza, int token, string sipariskodu,double iskonto,double net ,double tutari, string aciklama, string musteriadi, string musterisoyadi,string telefonu,string email)
        {
            int durum = 0;

            // önce o güne ait tüm iskontoları siliyor daha sonra gelen dizideki tüm iskontolu bir döngü içerisinde  tek tek kaydediyor
            // böylece masraflarda anlık  tutarlılık sağlanıyor

            object[] kolonlar = {"subekodu","firmaID","sipariskodu","brut","iskonto","net","aciklama","tarih","saat","musteri","telefon","email" };
            object[] degerler = {imza ,token,sipariskodu,tutari,iskonto,net,aciklama,context.sadecetarih(),context.sadecesaat(),musteriadi+" "+musterisoyadi,telefonu,email};

            context.myekle("iskontolar", kolonlar, degerler);




            return durum;
        }

        [WebMethod]
        public int musteriler(string imza, int token , string isimsoysim,string email, string telefonu, string mid)
        {
            int durum = 0;

            // önce o güne ait tüm iskontoları siliyor daha sonra gelen dizideki tüm iskontolu bir döngü içerisinde  tek tek kaydediyor
            // böylece masraflarda anlık  tutarlılık sağlanıyor
            object[] kolonlar = {"subekodu","firmaID","musteriisim","telefon","email","sistemID" };
            object[] degerler = {imza,token,isimsoysim,telefonu,email,mid};

            context.ekle("musteriler",kolonlar,degerler);



            return durum;
        }

        [WebMethod]
        public bool uyumluluk(string kiy, string aktivasyonID)
        {
            linkyactive lac = new linkyactive();
            lac.Kiy = kiy;
            lac.RegisterID = aktivasyonID;
            lac.uyumlukontrol();
            return lac.Uyumluluk;
        }

         [WebMethod]
        public byte finans(string mac)
        {
            byte durum = 0;

            linkyactive lc = new linkyactive();
            lc.Harddisk = mac;
            lc.finans();
            durum = lc.Odemedurumu;

            return durum;
        
        }

    }
}
